Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[MVC 미션 1단계] 오리(오현서) 미션 제출합니다. #355

Merged
merged 4 commits into from
Sep 14, 2023

Conversation

carsago
Copy link

@carsago carsago commented Sep 13, 2023

안녕하세요 밀리 잘부탁드립니다.

1단계는 테스트 하기에도 패키지에 의존하기 때문에 어렵네요..
학습 테스트는 별도 로컬 브랜치에서 해서 커밋이 얼마 없습니다.
구구 커밋 빼고 보기

@carsago carsago requested a review from miseongk September 13, 2023 04:22
@carsago carsago self-assigned this Sep 13, 2023
Copy link

@miseongk miseongk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

안녕하세요 오리!
메서드 분리를 적절하게 잘 해주셔서 코드가 쉽게 잘 읽혔어요 ㅎㅎ
제 코드가 가독성이 안좋다는 것을 깨달아버렸어요🥲
잘해주셔서 크게 리뷰할 만한 부분이 없었네요.

약간의 질문을 남겼으니 확인해주세요!
바로 approve 하겠습니다! 👍

Comment on lines +41 to +44
Set<Class<?>> clazz = getClazzByAnnotation(packagePath, Controller.class);
for (Class<?> aClass : clazz) {
List<Method> methods = getMethodsByAnnotation(aClass, RequestMapping.class);
Object instance = getInstance(aClass);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

메서드 분리가 이해하기 쉽게 잘 되어 있어서 좋네요 👍👍

}
}

private <T extends Annotation> Set<Class<?>> getClazzByAnnotation(Object packagePath, Class<T> annotationClass) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

메서드명을 getClassByAnnotation이라고 해도 좋을 것 같아요!

Comment on lines +74 to +79
RequestMapping requestMapping = method.getAnnotation(RequestMapping.class);
for (RequestMethod requestMethod : requestMapping.method()) {
HandlerKey handlerKey = new HandlerKey(requestMapping.value(), requestMethod);
handlerExecutions.put(handlerKey, handlerExecution);
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

RequestMapping 어노테이션을 보면 method 디폴트가 빈 배열이여서 만약 RequestMapping을 사용하는 개발자가 실수로 method를 지정해주지 않는다면 해당 메서드는 등록되지 않겠네요!
이런 경우 get할 때 null을 반환하네요. 이에 대한 예외 처리도 해주면 좋을 것 같은데 어떻게 생각하시나요??

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아! 추가적으로 위와 같은 맥락으로 getHandler()를 호출 했을 때 해당하는 핸들러가 없을 때 null을 반환하기 때문에 외부에서 handlerExecution.handle(request, response); 을 할 때 NPE가 뜨게 되는데 null을 반환하는게 좋을까요?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

말씀해주신 부분을 놓치고 있었네요!! 다음 단계 들어가면서 관련 로직을 추가해보겠습니다

@miseongk miseongk merged commit 2c998b9 into woowacourse:carsago Sep 14, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants